﻿/**********************************************************************
 * @file   GUILoadConstraintDialog.h
 * @brief  载荷的约束窗口声明
 * @author liuzhonghua (liuzhonghuaszch@163.com)
 * @date   2024-12-06
 *********************************************************************/
#ifndef _GUILoadConstraintDialog_H
#define _GUILoadConstraintDialog_H

#include "GUILoadDialogAPI.h"
#include "GUILoadBaseDialog.h"
#include "FITK_Kernel/FITKCore/FITKActionOperator.h"

namespace Ui
{
    class GUILoadConstraintDialog;
}

namespace GUI
{
    /**
     * @brief 载荷的约束窗口类
     * @author liuzhonghua (liuzhonghuaszch@163.com)
     * @date 2024-10-23
     */
    class GUILoadDialogAPI GUILoadConstraintDialog : public GUILoadBaseDialog
    {
        Q_OBJECT;
    public:
        /**
         * @brief    create load object dialog
         * @param[i] oper   My Param doc
         * @param[i] parent operator
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-09
         */
        GUILoadConstraintDialog(Core::FITKActionOperator* oper, QWidget* parent = nullptr);
        /**
         * @brief edit load object dialog
         * @param[i]  obj            My Param doc
         * @param[i]  oper           operator
         * @param[i]  parent
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date 2024-10-23
         */
        GUILoadConstraintDialog(Acoustics::FITKAcousticsAbstractLoad* obj, Core::FITKActionOperator* oper, QWidget* parent = nullptr);
        /**
         * @brief Destroy object
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date 2024-10-23
         */
        virtual ~GUILoadConstraintDialog();
        /**
         * @brief    初始化
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-09
         */
        virtual void init() override;

    protected slots:
        /**
         * @brief cencel button clicked slot
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date 2024-10-23
         */
        void on_pushButton_Cancel_clicked();
        /**
         * @brief OK button clicked slot
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date 2024-10-23
         */
        void on_pushButton_OK_clicked();

    protected:
        /**
         * @brief    初始化界面图像
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-11
         */
        void initWidgetImage();
        /**
         * @brief  初始化FE子系统载荷数据
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-12-09
         */
        void initConstraintFESubsysData();
        /**
         * @brief  初始化SEA子系统声腔载荷数据
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-12-09
         */
        void initConstraintSEAAcousticData();
        /**
         * @brief  初始化SEA子系统板载荷数据
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-12-09
         */
        void initConstraintSEAShellData();
        /**
         * @brief  初始化SEA子系统梁载荷数据
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-12-09
         */
        void initConstraintSEABeamData();
        /**
         * @brief    创建新的载荷约束数据
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-10
         */
        void createNewLoadConstraintObjData();
        /**
         * @brief    从界面获取数据
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-10
         */
        virtual void getDataFormWidget() override;
        /**
         * @brief  初始化FE子系统载荷数据
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-12-09
         */
        void getConstraintFESubsysDataFormWidget();
        /**
         * @brief  初始化SEA子系统声腔载荷数据
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-12-09
         */
        void getConstraintSEAAcousticDataFormWidget();
        /**
         * @brief  初始化SEA子系统板载荷数据
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-12-09
         */
        void getConstraintSEAShellDataFormWidget();
        /**
         * @brief  初始化SEA子系统梁载荷数据
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-12-09
         */
        void getConstraintSEABeamDataFormWidget();
        /**
         * @brief    从界面里获取设置的名称
         * @return   QString
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-10
         */
        virtual QString getNameFormWidget() override;

    protected:
        /**
         * @brief ui object
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date 2024-10-23
         */
        Ui::GUILoadConstraintDialog* _ui = nullptr;
    };
}

#endif
